package com.wcr.edu.info.manager.controller;

import com.wcr.edu.info.manager.domain.Student;
import com.wcr.edu.info.manager.service.StudentService;

import java.util.Scanner;

//- 添加学生: 键盘录入学生信息(id，name，age，birthday)
//  使用数组存储学生信息,要求学生的id不能重复
//- 删除学生: 键盘录入要删除学生的id值,将该学生从数组中移除,如果录入的id在数组中不存在,需要重新录入
//- 修改学生: 键盘录入要修改学生的id值和修改后的学生信息
//  将数组中该学生的信息修改,如果录入的id在数组中不存在,需要重新录入
//- 查询学生: 将数组中存储的所有学生的信息输出到控制台
public abstract class BaseStudentController {
    StudentService studentService = new StudentService();
    Scanner sc = new Scanner(System.in);


    //系统菜单搭建
    public void start() {

        abc:
        while (true) {
            System.out.println("--------欢迎来到 <学生> 管理系统--------");
            System.out.println("请输入您的选择: 1.添加学生  2.删除学生  3.修改学生  4.查看学生  5.退出");
            String choice = sc.next();
            switch (choice) {
                case "1":
                    //System.out.println("添加学生");
                    addStudent();
                    break;
                case "2":
                    //System.out.println("删除学生");
                    deleteStudent();

                    break;
                case "3":
                    xiuGaiStudent();
                    //System.out.println("修改学生");
                    break;
                case "4":
                    ckStudent();
                    //System.out.println("查看学生");
                    break;
                case "5":
                    System.out.println("感谢您的使用,谢谢");
                    break abc;
                default:
                    System.out.println("您的输入有误,请重新输入");
                    break;

            }
        }
    }

    //删除学生方法(客服)
    private void deleteStudent() {
        Student[] stu = studentService.ckStudent();
        if (stu == null) {
            System.out.println("暂无存储信息,请添加后重试");
            return;
        }
        System.out.println("请输入您要删除的学生ID");
        String shanChuId = sc.next();

        boolean is = studentService.isId(shanChuId);
        if (is) {
            studentService.shanChuId(shanChuId);
            System.out.println("删除成功");

        } else {
            System.out.println("ID不存在,删除失败");
        }
    }

    //修改学生方法(客服)
    private void xiuGaiStudent() {
        Student[] stu = studentService.ckStudent();
        if (stu == null) {
            System.out.println("暂无存储信息,请添加后重试");
            return;
        }
        System.out.println("请输入您要修改的ID");
        String newid = sc.next();
        boolean isid = studentService.isId(newid);
        if (isid) {
            Student newstudent = getStudent(newid);
            boolean s = studentService.xiugai(newid, newstudent);
            if (s) {
                System.out.println("恭喜,修改成功");

            }
        } else {
            System.out.println("您输入的id不存在");

        }

    }


    //  添加学生方法(客服)
    private void addStudent() {
        String sid;

        //键盘录入学生信息
        while (true) {
            System.out.println("请输入学生学号");
            sid = sc.next();
            //输入id,检查是否重复
            boolean is = studentService.isId(sid);
            if (!is) {
                break;
            } else {
                System.out.println("您输入的学号已被占用,请重新输入");
            }
        }
        //不重复的话,输入姓名 年龄 生日
        Student student = getStudent(sid);
        //将信息传入到业务员
        //调用业务员的添加方法
        boolean add = studentService.addS(student);
        //如果为true,则题是添加成功
        if (add) {
            System.out.println("恭喜您,添加成功");
        } else {
            System.out.println("添加失败,请检查");
        }
    }

    //添加学生信息方法(客服)
    public Student getStudent(String sid) {
        System.out.println("请输入学生姓名");
        String sname = sc.next();
        System.out.println("请输入学生年龄");
        String sage = sc.next();
        System.out.println("请输入学生生日");
        String sbirthday = sc.next();
        //创建一个学生类对象 用来接收存放数据
        Student student = new Student();
        student.setId(sid);
        student.setName(sname);
        student.setAge(sage);
        student.setBirthday(sbirthday);
        return student;
    }


    //查看学生方法(客服)
    public abstract void ckStudent();


}